﻿/**
   данный компонент отвечает за передвижение рыб внутри игры
 */

(function () {
    "use strict";

    F.Fish = function (container, environment) {
        var self = this;
        F.Fish.superclass.constructor.apply(self, [container, environment]);
        //Текущие размеры рыб 99*72
        self.initialWidth = 99;
        self.initialHeight = 72;
        //Рыб инициализируем случайным размером, и случайной прозрачностью.
        self.gameBox = environment.getGameBox();
        //рыбы, характеризуются
        self.opacity = Math.random();
        self.scale = Math.random() + 0.1;
        self.velocity = Math.abs(self.scale) * 10; //Скорость прямо пропорционально зависит от масштаба
        self.sign = (Math.random() - 0.5) > 0 ? 1 : -1;
        self.width = self.initialWidth * self.scale;
        self.height = self.initialHeight * self.scale;

        do {
            self.x = Math.random() * self.gameBox.width;
            self.y = Math.random() * self.gameBox.height;
        } while (!self.validateCoord())
        /**
        *	Прозрачностью, скоростью движения, масштабом,
        направлением движения
        */

        var img = self.fishImg = new Image();
        img.src = "images/" + (self.sign > 0 ? "fishesright.png" : "fishesleft.png");
        img.className = "fish";
        img.style.width = self.width + "px";
        img.style.height = self.height + "px";
        img.style.opacity = self.opacity;
        self.process(0);
        container.appendChild(img);
        
    };

    extend(F.Fish, F.Shape);

    var fp = F.Fish.prototype;
    
    fp.process = function (dt) {
        var self = this;
        //Если выходим за границы, то выходим с другой стороны
        self.x += self.sign * self.velocity * dt;
        //self.y = self.y;

        if (!self.validateCoord()) {
            if (self.sign > 0) {
                self.x = 0;
            } else {
                self.x = self.gameBox.width - self.width;
            }
        }

        var xy = self.environment.translateGameToReal(self.x, self.y);
        self.fishImg.style.left = xy.x + "px";
        self.fishImg.style.top = xy.y + "px";
    };


    fp.validateCoord = function () {
        var self = this;
        return self.x > self.gameBox.x &&
                self.y - self.height > self.gameBox.y + 100 &&
                self.x + self.width < self.gameBox.width &&
                self.y < self.gameBox.height;
    };
    
    fp = null;

} ());